package com.lebang.controller;

import com.lebang.common.Login;
import com.lebang.entity.sys.Group;
import com.lebang.entity.sys.LbbUser;
import com.lebang.model.vo.UserSearchVo;
import com.lebang.model.vo.UserVo;
import com.lebang.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.Map;

/**
 * 用户管理
 *
 * @author weizx
 * @className UserController
 * @date 2018年7月9日 下午4:45:09
 */
@Controller
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 我的资料
     *
     * @param model
     * @param session
     * @return
     * @author weizx
     * @date 2018年7月7日 下午9:50:52
     */
    @Login
    @RequestMapping(value = {"/user/profile"}, method = {RequestMethod.GET})
    public String profile(Model model, HttpSession session) {
        String userid = (String) session.getAttribute("userid");
        if (null != userid && !"".equals(userid)) {
            LbbUser user = userService.get(userid);
            model.addAttribute("user", user);
        }
        return "/user/profile";
    }

    /**
     * 修改密码
     *
     * @return
     * @author weizx
     * @date 2018年7月9日 下午3:52:12
     */
    @Login
    @RequestMapping(value = {"/user/updatepass"}, method = {RequestMethod.GET})
    public String updatepass() {
        return "/user/updatepass";
    }

    /**
     * 修改密码
     *
     * @param password
     * @param session
     * @return
     * @author weizx
     * @date 2018年7月9日 下午4:37:46
     */
    @Login
    @RequestMapping(value = {"/user/updatepass"}, method = {RequestMethod.POST})
    @ResponseBody
    public String pass(@RequestParam("password") String password, HttpSession session) {
        String userid = (String) session.getAttribute("userid");
        if (null != userid && !"".equals(userid)) {
            userService.update(userid, password);
            return "修改成功！";
        }
        return "修改失败！";
    }

    /**
     * 用户列表
     *
     * @return
     * @author weizx
     * @date 2018年7月9日 下午4:37:58
     */
    @Login
    @RequestMapping(value = {"/user/list"}, method = {RequestMethod.GET})
    public String users() {
        return "/user/list";
    }

    /**
     * 用户列表
     *
     * @param vo
     * @return
     * @author weizx
     * @date 2018年7月9日 下午4:38:04
     */
    @Login
    @RequestMapping(value = {"/user/getList"}, method = {RequestMethod.POST})
    @ResponseBody
    public Map<String, Object> list(UserSearchVo vo) {
        Map<String, Object> data = userService.list(vo);
        return data;
    }

    /**
     * 用户新增
     *
     * @return
     * @author weizx
     * @date 2018年7月10日 下午5:35:59
     */
    @Login
    @RequestMapping(value = {"/user/insert"}, method = {RequestMethod.GET})
    public String insert() {
        return "/user/edit";
    }

    /**
     * 用户编辑
     *
     * @param model
     * @return
     * @author weizx
     * @date 2018年7月10日 下午5:35:21
     */
    @Login
    @RequestMapping(value = {"/user/edit/{userid}"}, method = {RequestMethod.GET})
    public String edit(@PathVariable String userid, Model model) {
        LbbUser user = userService.get(userid);
        model.addAttribute("user", user);
        return "/user/edit";
    }

    /**
     * 用户分组
     *
     * @param model
     * @return
     * @author weizx
     * @date 2018年7月10日 下午5:35:21
     */
    @Login
    @RequestMapping(value = {"/user/group/{userid}"}, method = {RequestMethod.GET})
    public String dept(@PathVariable String userid, Model model) {
        List<Group> groups = userService.getGroups(userid);
        model.addAttribute("groups", groups);
        model.addAttribute("userid", userid);
        return "/user/group";
    }

    /**
     * 保存用户
     *
     * @return
     * @author weizx
     * @date 2018年7月10日 下午6:22:27
     */
    @Login
    @RequestMapping(value = {"/user/save"}, method = {RequestMethod.POST})
    @ResponseBody
    public String save(UserVo vo) {
        if (null == vo.getUserId() || "".equals(vo.getUserId())) {
            return userService.insert(vo);
        } else {
            return userService.update(vo);
        }
    }

    /**
     * 更新用户分组
     *
     * @return
     * @author weizx
     * @date 2018年7月11日 下午12:01:28
     */
    @RequestMapping(value = {"/user/group"}, method = {RequestMethod.POST})
    @ResponseBody
    @Login
    public String group(@RequestParam("userid") String userid, @RequestParam("groupid") String groupid) {
        return userService.updateGroup(userid, groupid);
    }

    /**
     * 删除
     *
     * @param ids
     * @return
     * @author weizx
     * @date 2018年7月11日 下午5:10:02
     */
    @RequestMapping(value = {"/user/del"}, method = {RequestMethod.POST})
    @ResponseBody
    @Login
    public String del(@RequestParam("ids") String[] ids) {
        userService.del(ids);
        return "删除成功！";
    }
}
